The design and creation of a data warehouse is traditionally a highly manual process. Typically, the dimensional model and database schema of the data warehouse is specified and created manually based on an understanding of the business requirements and, in general, independent from the source data. Unfortunately, designing a dimensional model and then mapping source data files to the corresponding database schema is a difficult and time-consuming process. Moreover, additional manual work is typically required to maintain that schema and the data it contains as new data is continually loaded into it.